#ifndef __fem_types_hh__
#define __fem_types_hh__


namespace fastfem 
{

enum PolynomialFamily { 
      Lagrange=0, // polynomials of lagrange family
      Legendre=1, // polynomials of scaled-legendre family
      Jacobi=2,    // polynomials of scaled-Jacobi family
      Monomial=3    // polynomials of Monomial type
      } ;


enum FunctionSpace { 
      Pk=0, // polynomials of order k
      Qk=1, // tensor products of polynomials of order k
      rQk=2 // refined tensor products of polynomials of order k
      } ;


enum ElementType { 
      Vertex=0,       // 0-dimensional entity
      Segment=1,      // 1-dimensional entity
      Triangle=2,     // 2-dimensional triangular entity
      Quadrangle=3,   // 2-dimensional quadrangular entity
      Tetrahedron=4,  // 3-dimensional tetrahedral entity
      Hexahedron=5,   // 3-dimensional hexahedral entity
      Prism=6         // 3-dimensional prismatic entity
      } ;


enum Gradient_Evaluation_Type {
      FORWARD  = 0,
      BACKWARD = 1
      } ;


enum Hessian_Evaluation_Type {
      FORWARD_FORWARD   = 00,
      FORWARD_BACKWARD  = 01,
      BACKWARD_FORWARD  = 10,
      BACKWARD_BACKWARD = 11
      } ;

}


#endif // #ifndef __fem_types_hh__
